Shinken (software)
Shinken is an open source computer system and network monitoring software application compatible with Nagios. It watches hosts and services, alerting users when things go wrong and again when they get better. The major improvement of Shinken over Nagios is the easy load balanced and highly available architecture. The administrator manage a single configuration, the system automatically "cuts" it into parts and dispatches it to worker nodes. It takes its name from this functionality, a Shinken is a sharp Japanese sword.
Shinken was written by Jean Gabès as a proof of concept for a new Nagios architecture. Believing new implementation was faster and more flexible than the old C code, he proposed it as the new development branch of Nagios 4.[3] The inclusion is not wished from Nagios authors, so now Shinken can be considered as a network monitoring software application compatible with Nagios.[4]
Shinken was originally designed to run under all systems where Python runs. The development environment is under Linux, but also runs well on other Unix variants and Windows. The reactionner process (responsible for sending notifications) can be run under the Android OS. It is free software, licensed under the terms of the Affero General Public License as published by the Free Software Foundation.
Overview
- Monitoring of network services (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, FTP, SSH)
- Monitoring of host resources (processor load, disk usage, system logs) on a majority of network operating systems, including Microsoft Windows with the NSClient++ plugin.
- Monitoring of anything else like probes (temperature, alarms...) which have the ability to send collected data via a network to specifically written plugins
- Monitoring via remotely-run scripts via Nagios Remote Plugin Executor (An embedded pure-Python implementation is available for Shinken)
- Remote monitoring supported through SSH or SSL encrypted tunnels.
- Simple plugin design that allows users to easily develop their own service checks depending on needs, by using the tools of choice (shell scripts, C++, Perl, Ruby, Python, PHP, C#, etc.)
- Plugins available for graphing of data (Nagiosgraph, Nagiosgrapher, PNP4Nagios, Graphite, and others available)
- Parallelized service and host checks available
- Ability to define network host hierarchy using "parent" hosts, allowing detection of and distinction between hosts that are down and those that are unreachable
- Contact notifications when service or host problems occur and get resolved (via e-mail, pager, SMS, or any user-defined method through plugin system)
- Ability to define event handlers to be run during service or host events for proactive problem resolution
- Support for implementing easily redundant and load balanced monitoring hosts
- Support for UTF-8 objects names
- Support for multi sites (like monitoring multiple customers with one administration point)
- Support for integrated business rules
- Support for filtering alerts by showing only root problems
- Support for native messaging api of Android
- Support for recurring downtimes through the maintenance_period attribute
- Ability to route checks to dedicated pollers (processes specialised in executing plugins)
Architecture
A Shinken installation consists of several processes, each optimized for a specific task.
- Arbiter
- Load the configuration files and dispatch the host and service objects to the scheduler(s)
- Watchdog for all other processes and responsible for initiating failovers if an error is detected
- Scheduler
- Plan the next run of host and service checks
- Dispatch checks to the poller(s)
- Raise Notifications and dispatch them to the reactionner(s)
- Update the retention file (or other retention backends)
- Send broks (internal events of any kind) to the broker(s)
- Poller
- Get checks from the scheduler, execute plugins and send the results to the scheduler
- Reactionner
- Get notifications and eventhandlers from the scheduler, execute plugins/scripts and send the results to the scheduler
- Broker
- Has multiple modules (usually running in their own processes)
- Gets broks from the scheduler and forwards them to the broker modules
- Modules decide if they handle a brok depending on a brok's type (log, initial service/host status, check result, begin/end downtime, ...)
- Modules process the broks in many different ways. Some of the modules are:
- ndodb - updates an ndo database (MySQL or Oracle)
- merlindb - updates a Merlin database which can then be used by the Ninja GUI
- livestatus - updates in-memory objects which can be queried by GUIs like Thruk or MultiSite
- webui - updates in-memory objects and provides a webserver for the native Shinken GUI
- simple_log - writes log messages to a file
- status_dat - writes to a status.dat file which can be read by the classic cgi-based GUI
- Receiver (optional)
- Listens for NSCA events and forwards them to the arbiter
- Reads the command pipe and forwards external commands to the arbiter
- Allows to setup a "farm" of NSCA-daemons to handle a high rate of incoming events
There can be multiple instances for each type of process, either on a single host or spread over many hosts. Adding more processes automatically distributes the load.
See also
References
External links
- Shinken-monitoring.org, official website
- Nagios Plugins the home of the official plugins
- NagiosExchange overview of plugins, addons for Nagios that can be used for Shinken too
- Linux Magazine article about Shinken in issue 115 (june 2010) of Linux Magazine
- Linux Magazin article about Shinken in the german Linux Magazin 04/2010
- freeX comparison of Nagios, Icinga, Zabbix and Shinken in the german magazine freeX